package com.xiaoyao.myframeapp.mvp.base;

import android.os.Bundle;
import android.view.View;

import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import com.xiaoyao.myframeapp.FrameApplication;
import com.xiaoyao.myframeapp.utils.L;
import com.xiaoyao.myframeapp.utils.db.XUtilDb;

import org.xutils.DbManager;
import org.xutils.ex.DbException;
import org.xutils.x;

import butterknife.ButterKnife;

/**
 * @Author xiaoyao
 * @Email xiao80206040@qq.com
 * @Explain
 * @Created by Administrator on 2017/5/6 0006 11:35
 */
public abstract class BaseActivityNo extends RxAppCompatActivity {


    protected View view;
    protected DbManager db  ;

    /**
     * Activity 重新加载方法
     */
    @Override
    protected void onRestart() {
        super.onRestart();
        L.i(getClass(), "onRestart");
        initView();
        initListener();
        initData();
        FrameApplication.getActivitys().remove(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        {
            try {
                db = x.getDb(XUtilDb.getDaoConfig());
            } catch (DbException e) {
                e.printStackTrace();
            }
        }


        //在使用SDK各组件之前初始化context信息，传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        //TODO 百度地图 每次使用 初始化
//        SDKInitializer.initialize(getApplicationContext());
        super.onCreate(savedInstanceState);
        setContentView(getView());
        ButterKnife.bind(this);

        //TODO 在创建时添加  销毁时清除
        FrameApplication.getActivitys().add(this);

        initView();
        initListener();
        initData();
    }

    //-------------------------------------------

    /**
     * 设置Layout
     */
    protected abstract int getLayoutId();

    /**
     * 初始化控件
     */
    protected abstract void initView();

    /**
     * 初始化事件
     */
    protected abstract void initListener();

    /**
     * 加载数据
     */
    protected abstract void initData();

    /**
     * 显示进度条
     */
    protected abstract void showLoading();

    /**
     * 隐藏进度条
     */
    protected abstract void hideLoading();

    /**
     * @return 显示的内容
     */
    public View getView() {
        view = View.inflate(this, getLayoutId(), null);
        return view;
    }
}
